package com.uade.tp.view;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

import com.uade.tp.controlador.Delivery;
import com.uade.tp.negocio.view.ProductoSeccionView;
import com.uade.tp.negocio.view.SeccionView;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class ActualizarStock extends javax.swing.JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JLabel jlblSeccion;
	private JComboBox<?> jComboBoxSecciones;
	private JLabel lblStock;
	private JButton jButtonCancelar;
	private JButton jbuttonActualizarStock;
	private JTextField jtextStock;
	private JComboBox<?> jComboBoxProductos;
	private JLabel jlblProductos;
	private static ActualizarStock instancia;


	
	public static ActualizarStock getInstancia() {
		if (instancia == null){
			instancia = new ActualizarStock();
		}
		instancia.setLocationRelativeTo(null);
		return instancia;
		
	}
	
	
	private ActualizarStock() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jlblSeccion = new JLabel();
				getContentPane().add(jlblSeccion);
				jlblSeccion.setText("Secciones");
				jlblSeccion.setBounds(46, 23, 84, 16);
			}
			{
				ComboBoxModel jComboBoxSeccionesModel = 
						new DefaultComboBoxModel();
				jComboBoxSecciones = new JComboBox();
				getContentPane().add(jComboBoxSecciones);
				jComboBoxSecciones.setModel(jComboBoxSeccionesModel);
				jComboBoxSecciones.setBounds(127, 20, 198, 23);
				jComboBoxSecciones.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						ComboBoxModel productosModel = 
								new DefaultComboBoxModel(ActualizarStock.getInstancia().cargarProductos());
						jComboBoxProductos.setModel(productosModel);
					}
				});
			}
			{
				jlblProductos = new JLabel();
				getContentPane().add(jlblProductos);
				jlblProductos.setText("Productos");
				jlblProductos.setBounds(46, 64, 86, 16);
			}
			{
				ComboBoxModel jComboBoxProductosModel = 
						new DefaultComboBoxModel();
				jComboBoxProductos = new JComboBox();
				getContentPane().add(jComboBoxProductos);
				jComboBoxProductos.setModel(jComboBoxProductosModel);
				jComboBoxProductos.setBounds(127, 61, 193, 23);
				jComboBoxProductos.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jtextStock.setText(String.valueOf(
									((ProductoSeccionView)jComboBoxProductos.getSelectedItem()).getStock()
									));
					}
				});
			}
			{
				lblStock = new JLabel();
				getContentPane().add(lblStock);
				lblStock.setText("Stock: ");
				lblStock.setBounds(46, 120, 81, 16);
			}
			{
				jtextStock = new JTextField();
				getContentPane().add(jtextStock);
				jtextStock.setBounds(127, 117, 44, 23);
			}
			{
				jbuttonActualizarStock = new JButton();
				getContentPane().add(jbuttonActualizarStock);
				jbuttonActualizarStock.setText("Actualizar Stock");
				jbuttonActualizarStock.setBounds(0, 159, 348, 42);
				jbuttonActualizarStock.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						try{
						int stockNuevo = Integer.parseInt(jtextStock.getText());
						Delivery.getInstancia().actualizarStock(
								((SeccionView)jComboBoxSecciones.getSelectedItem()).getNombre(), 
								((ProductoSeccionView)jComboBoxProductos.getSelectedItem()).getProducto().getNombre(), 
								stockNuevo);
						JOptionPane.showMessageDialog(null, "Stock actualizado");
						}catch (NumberFormatException e) {
							JOptionPane.showMessageDialog(null, "Stock debe tener un valor numerico");
						} catch (NullPointerException e) {
							JOptionPane.showMessageDialog(null, "Debe seleccionar todos los elementos");
						}
					}
				});
			}
			{
				jButtonCancelar = new JButton();
				getContentPane().add(jButtonCancelar);
				jButtonCancelar.setText("Cancelar");
				jButtonCancelar.setBounds(0, 210, 348, 34);
				jButtonCancelar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						System.out.println("jButtonCancelar.actionPerformed, event="+evt);
						ActualizarStock.getInstancia().setVisible(false);
					}
				});
			}
			pack();
			this.setSize(369, 282);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	private SeccionView[] cargarSecciones() {
		Vector<SeccionView> secciones=Delivery.getInstancia().getDeliveryView().obtenerSeccionesView();
		SeccionView[] seccionesAdd = new SeccionView[secciones.size()];
		secciones.toArray(seccionesAdd);
		
		return seccionesAdd;
	}
	
	private ProductoSeccionView[] cargarProductos() {
		SeccionView secciones=(SeccionView)jComboBoxSecciones.getSelectedItem();
		secciones = Delivery.getInstancia().obtenerProductosView(secciones.getNombre());
		ProductoSeccionView[] productosAdd = new ProductoSeccionView[secciones.getProductos().size()];
		secciones.getProductos().toArray(productosAdd);
		
		return productosAdd;
	}
	
	public void recargarSecciones() {
		ComboBoxModel jComboBoxSeccionesModel = 
				new DefaultComboBoxModel(this.cargarSecciones());
		jComboBoxSecciones.setModel(jComboBoxSeccionesModel);
	}
	
	public boolean existenSecciones() {
		return jComboBoxSecciones.getItemCount() > 0;
	}

}
